package singleton;

/**
 * 懒汉式(线程不安全)
 * 懒加载,只有调用getInstance方法的时候才会创建对象,但是多线程情况下,会出现线程安全问题.
 *
 * @author 1
 * @version 1.0
 * @description: TODO
 * @date 2024-08-23 15:05
 */
public class Singleton_02 {
    /**
     * 1.私有构造方法
     */
    private Singleton_02(){};
    /**
     * 2.本类的静态全局变量
     */
    private static Singleton_02 instance;

    /**
     * 3.通过判断对象是否被初始化过,来选择是否创建对象
     * 线程不安全: 如果实例化之前,A线程执行到instance == null的时候,线程调度机制把cpu资源给了B线程,此时B线程执行instance == null发现单例对象
     * 没有被实例化,这样就会导致单例对象被多次实例化;(改进看下一个案例)
     *
     * @return
     */
    public static Singleton_02 getInstance() {
        if (instance == null) {
            instance = new Singleton_02();
        }
        return instance;
    }

}
